记一次有限制的网页pdf破解 您所在的位置:网站首页 记一次有限制的网页pdf破解 记一次有限制的网页pdf破解

记一次有限制的网页pdf破解

2023-05-01 19:14| 来源: 网络整理| 查看: 265

作者:涛之雨

链接:

记一次有限制的网页pdf破解https://www.52pojie.cn/thread-1385134-1-1.html (出处: 吾爱破解论坛)

目录 记一次有限制的网页pdf破解 起因 初步分析 尝试下载 找出密码 解密JS法 劫持事件法 下载PLUS 附录

记一次有限制的网页pdf破解 起因

(文件附在文末)

初步分析

首先用chrome浏览器打开,查看效果

点击确定,F12打开控制台(我怎么打不开)

那就ctrl+shift+I打开控制台(打开了)

那肯定是js搞的鬼,随手翻一下js就看到

(有什么用。。。可以有不下于5种方法绕过)

列举一下一瞬间想到的(欢迎补充)

最简单的就是本地js啊!直接打开编辑。。。 上述的ctrl+shift+I 菜单$\to$更多工具$\to$开发者工具 ctrl+shift+C(这是快速打开UI布局分析工具,就是这个小按钮) fd自动转发(针对服务器返回的数据,保存到本地然后转发) 先打开控制台,再打开网页(斜眼笑)

大胆猜测一下,一个HTML30多M,说明数据都在本地,这个弹窗应该是服务器验证之类的

所以内容所占最多的部分就是PDF文件的主体。

使用010 Editor打开网页(因为我电脑问题。。。sublime打开直接就卡死了。。。汗-_-||),

向下随便翻翻,就找到一大堆的内容(如下图所示)

大致可以猜测为base64。

当然有没有加密啥的都不知道,只知道最后一步应该是base64。

然后向下看,有好几个script标签。

不得不说,这个作者还是挺有心的,下面三个eval的加密,上面一个号称耶稣也还原不了的加密。

唔,先不解密吧,(肯定这块就有猫腻了)

刷新一下页面,在弹窗的时候按下暂停键,(注:在source标签里)

点确定后就断下来了

稍作格式化,有alert出现

向上翻一下,找到else所在判断的另一个分支。。。这灵魂判断。。。

不管38妇女节(虽然还没到)

复制粘贴直接运行。(有点慢。。。)

这不就运行出来了么:

好了这就是主要的代码了,拿出来解密再重命名一下就是:

var DEFAULT_URL = \'\'; var pdfUrl = document.location.search.substring(1); if (null == pdfUrl || \'\' == pdfUrl) { var BASE64_MARKER = ";base64,"; var preFileId = \'\'; var pdfAsDataUri = "data:application/pdf;base64," + PDFData; var pdfAsArray = convertDataURIToBinary(pdfAsDataUri); DEFAULT_URL = pdfAsArray; function convertDataURIToBinary(data) { var point = data.indexOf(BASE64_MARKER) + BASE64_MARKER.length; var b64 = data.substring(point).replace(/[\n\r]/g, \'\'); var raw = window.atob(b64); var rawlength = raw.length; var U8array = new Uint8Array(new ArrayBuffer(rawlength)); for (i = 0; i < rawlength; i++) { U8array[i] = raw.charCodeAt(i) & 255; } return U8array; } }

明显的的看到了,协议是application/pdf,编码是base64。

尝试下载

base64解码后直接保存16进制不就好了,随手写了python解密保存

温馨提示,文件有点大,我是直接用010 Editor把前后都删掉,然后添加前后部分的

import base64 PDFData = "JVBERi0xLjQN***********这里是完整的base64,30多m,直接base64后放出来估计要被h大打死(暴筋)**********MTUNCiUlRU9GDQo=" with open(\'temp.pdf\', \'wb\') as f: f.write(base64.b64decode(PDFData))

先喝杯咖啡。。。等待时间有点长

打开。

还有密码。。。我大意了,没有密码!

找出密码

原网页中可以打开,肯定是有保存了密码的,向下翻一下

解密JS法

又是一段“最强”加密的js,很少,直接看都能看出来

密码是_0x4c77(\'0x2\', \'V%DS\')的结果,直接运行即可出结果

劫持事件法

上面有个输入密码以打开此 PDF 文件。下面有个确定,在确定按钮下断点。

点击下方的格式化按钮

在监听提醒的位置下断点(如果找不到在哪里了就切换到元素界面,再点一次)

刷新页面即可断下,鼠标放到value即可看到密码。

下载PLUS

至此解密完ch。。。啥?没有安装python?

既然他利用application/pdf协议生成的PDF,那我也可以直接用blob协议下载PDF,代码如下:

var bstr = atob(PDFData)//atob()方法将base64数据解码 var leng = bstr.length//获取文件长度 var u8arr = new Uint8Array(leng)//新建Uint8数组存放字节 while(leng--){ u8arr[leng] = bstr.charCodeAt(leng)//转Unicode编码 } const blob = new Blob([u8arr], {type:\'application/pdf\'});//新建blob协议 const fileName = `jiemipdf.pdf`;//文件名 const link = document.createElement(\'a\');//新建a链接标签 link.href = window.URL.createObjectURL(blob);//添加下载地址 link.download = fileName;//文件名 link.click();//模拟点击事件 window.URL.revokeObjectURL(link.href);//执行下载操作

复制粘贴到console里,(如果PDFData变量名变了记得重命名)

回车,弹出下载框!

(搞不懂为啥比python解码还快。。。)

至此结束。

如果不想要密码,可以到咱们吾爱随便搜索一下,找个去除密码的软件即可。

附录

内含:

HTML原文件 本文PDF(不包含附录链接) 下载后的PDF

下载:https://taozhiyu.lanzous.com/ind9nmmm3mb 密码:3xoq 解压密码:52pojie.cn



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有